import { closePage, itoStr } from './Common';
import { isEmptyObject } from '@/utils/Object';
/**
 * 卡片激活 -> 卡状态校验
 * cardInfo: 卡信息
 * that: vue 实例
 */
function cardActiveCheck(cardInfo: any, that: any) {
    if (cardInfo.CARDSTAT.trim() === 'O') {
        that.$alert('卡片已激活', '接口提示', {
            closeOnClickModal: false,
            customClass: 'warning', type: 'warning',
            showClose: false,
        }).then(() => {
            closePage(that.$route, that, 1);
        });
    }
}

/**
 * 公共校验
 * rules: 菜单规则 rules______需要校验的菜单和校验项
 * data: vuex缓存中对应的 菜单校验的数据 checAllData  data______菜单校验的所有规则
 * that: vue 实例
 */
async function commonMenuCheck(rules: any, data: any, that: any) {
    // "CATEGORY_10": {
    //     "falg": false, //这个字段 是判断是否需要校验的标志 false 需要校验
    //     "label": "个人卡账户",
    //     "dictValue": "VALIDRULE_ACCOUNT_TYPE"
    // },
    // "none": {
    //     "falg": false,  //这个字段 是判断是否需要校验的标志
    //     "label": "不验证",
    //     "dictValue": "VALIDRULE_SAFETY"
    // },
    // "H": {
    //     "falg": false, //这个字段 是判断是否需要校验的标志
    //     "label": "账户止付",
    //     "dictValue": "VALIDRULE_CARD_STATUS"
    // },
    // "high": {
    //     "falg": false, //这个字段 是判断是否需要校验的标志
    //     "label": "高风险业务动态身份验证",
    //     "dictValue": "VALIDRULE_SAFETY"
    // },

    //item= [
    //     menuId: 39,
    //     ruleCode: "H1",
    //     ruleId: 3433,
    //     ruleValue: "账户止付禁止还款",
    // ]

    //data[item.ruleCode] = { falg: false, label: "持卡人请求关闭", dictValue: "VALIDRULE_CARD_STATUS" }

    let flag: any = true;
    let SAFETY: any = 'none';
    // console.log('rules______需要校验的菜单和校验项', rules);
    // console.log('data______菜单校验的所有规则', data);

    // 便利需要验证规则的数组
    rules.forEach((item: any) => {
        // item 是 从菜单里获取的需要去验证的规则 
        // data 是个大对象 里面是key value
        // data[item.ruleCode]   CC:{dictValue:"VALIDRULE_CARD_STATUS",falg:false,label:"贷款到期"}
        // console.log(item, data[item.ruleCode], 'item.ruleCode————需要校验的菜单和校验项');
        // 如果已经校验不通过了，直接退出不进行下一次操作
        if (!flag) { return; }
        // 如果有当前验证字段则进入
        // console.log('data[item.ruleCode]_____________菜单校验的所有规则', data[item.ruleCode]);

        if (!isEmptyObject(data[item.ruleCode])) {
            // 如果需要风险验证则进入当前逻辑
            // 判断是否需要风险验证，并且当前保存字段为false
            if (item.ruleCode === 'high' && !data[item.ruleCode].falg) {
                // console.log('high 进来了 d');
                SAFETY = 'high';
                return false;
                // 执行到rerun 后下面就不走了
            };
            if (item.ruleCode === 'medium' && !data[item.ruleCode].falg) {
                // console.log('medium 进来了 d');
                SAFETY = 'medium';
                return false;
                // 如果当前规则为true，并且不是风险验证三项，则验证不通过，
                // checAllData里匹配上的数据的falg 为true 时 且 当前点击的菜单带过来的数据 item.ruleCode 不等于 none
                //  且当前点击的菜单不是中高风险菜单 时 需要验证菜单
            };
            // console.log('data[item.ruleCode]', data[item.ruleCode]);
            //dictValue: "VALIDRULE_ACCOUNT_TYPE"
            // falg: false 
            // falg 等于 true 就是校验未通过 打不开当前页面
            // label: "个人卡账户" 
            // console.log('item.ruleCode', item.ruleCode);
            // CATEGORY_10  
            // 如果为true则需要验证
            // 校验是否是预留手机号
            if (!data[item.ruleCode].falg && (item.ruleCode === 'check_reserve_mobile' || item.ruleCode === 'check_pwd')) {
                if (item.ruleCode === 'check_reserve_mobile') {
                    flag = false;
                    that.$alert(
                        `预留号码校验未通过！`,
                        '菜单校验',
                        { closeOnClickModal: false, customClass: 'warning', type: 'warning', showClose: false },
                    )
                }
                if (item.ruleCode === 'check_pwd') {
                    flag = false;
                    that.$alert(
                        `查询密码校验未通过！`,
                        '菜单校验',
                        { closeOnClickModal: false, customClass: 'warning', type: 'warning', showClose: false },
                    )
                }
            }
            // data 是所有的校验规则 item是需要校验的   check_reserve_mobile "校验预留手机" check_pwd "校验查询密码"
            //  item 里存在
            // 如果 falg 里的值为 true 时  表示 校验不通过  
            if (data[item.ruleCode].falg && item.ruleCode !== 'check_reserve_mobile' && item.ruleCode !== 'check_pwd') {
                //  console.log('所有的校验规则里falg 为true的 就是校验不通过的', data[item.ruleCode].falg);
                console.log(`校验没通过不可通行——————拦截项:${data[item.ruleCode].label}的flag为：true了`);

                //    进入到这里的菜单 就是一些需要验证的菜单 验证没通过
                // console.log('其他非特殊页面的页面校验');
                // 将flag设置成false

                // 弹窗提示未通过      item.ruleCode 取的是 需要校验的卡片状态  CATEGORY_10 "个人卡账户"
                // 这个 if else 是表示 他是账户不通过还是 状态不通过
                if (item.ruleCode.indexOf('CATEGORY') !== -1) {
                    flag = false;
                    that.$alert(
                        `账户类别校验未通过！`,
                        '菜单校验',
                        { closeOnClickModal: false, customClass: 'warning', type: 'warning', showClose: false },
                    ).then(() => {
                        // console.log('检查是否进入删除当前页面的方法');
                        // closePage(that.$route, that, 1);
                    });
                } else {
                    flag = false;
                    that.$alert(
                        `卡片状态校验未通过！`,
                        '菜单校验',
                        { closeOnClickModal: false, customClass: 'warning', type: 'warning', showClose: false },
                    ).then(() => {
                        // console.log('检查是否进入删除当前页面的方法');
                        // closePage(that.$route, that, 1);
                    });
                }
            }
        }
    });

    // 将判断字段retuer出去
    return { flag, SAFETY };
}

/**
 * 密码校验
 * data: vuex 缓存字段信息
 * that: vue 实例
 */
function check_query_pwd(data: any, that: any) {
    if (!data.passwordCheckFlag) {
        that.$alert('密码校验未通过！', '提示', {
            closeOnClickModal: false,
            customClass: 'warning', type: 'warning',
            showClose: false,
        });
        return false;
    }
    return true;
}

/**
 * 预留手机号校验
 * data: vuex 缓存字段信息
 * that: vue 实例
 */
function check_reserve_mobile(data: any, that: any) {
    if (!data.reservedMobileCheckFlag) {
        that.$alert('预留手机号校验未通过！', '提示', {
            closeOnClickModal: false,
            customClass: 'warning', type: 'warning',
            showClose: false,
        });
        return false;
    }
    return true;
}


/**
 * 卡产品校验
 * data: vuex 缓存字段信息
 * that: vue 实例
 */
function cardProductCheck(proName: any, cardInfo: any, that: any, menuName: string) {
    const productId = itoStr(cardInfo.PRODUCT, 4);
    if (productId !== '0020' && productId !== '0021') {
        that.$alert(
            `该卡片系列: ${proName}\n请在标准信用卡${menuName ? ` "${menuName}" ` : ''}菜单下办理！`,
            '提示', {
            closeOnClickModal: false,
            customClass: 'warning', type: 'warning',
            showClose: false,
        },
        ).then(() => {
            closePage(that.$route, that, 1);
        });
    } else {
        return true;
    }
}

export {
    commonMenuCheck,
    check_query_pwd,
    check_reserve_mobile,
    cardActiveCheck,
    cardProductCheck,
};
